import vnode from './vnode';
import CreateElement from './CreateElement.js'

/**
 * patch函数用于给虚拟节点上树。
 * @param {type} oldVnode 旧的虚拟节点
 * @param {type} newVnode 新的虚拟节点
 **/
export default function (oldVnode, newVnode) {
    /* 判断传入的第一个参数，是Dom节点还是虚拟节点 */
    if (!oldVnode.sel) {
        /* 如果传入的第一个参数是Dom节点，则要包装成虚拟节点虚拟节点 */
        oldVnode = vnode(oldVnode.tagName.toLowerCase(), {}, [], undefined, oldVnode);
    }

    /* 判断 oldVnode和newVnode是否是同一个节点 */
    if (oldVnode.key == newVnode.key && oldVnode.sel == newVnode.sel) {
        console.log('是同一个节点,进进行精细比较',)

    } else {
        console.log('不是同一个节点，插入新的，删除旧的',)
        let newVnodeElm = CreateElement(newVnode);
        /* 将新的节点插入到旧的节点之前 */
        if (oldVnode.elm && newVnodeElm && oldVnode.elm.parentNode) {
            oldVnode.elm.parentNode.insertBefore(newVnodeElm, oldVnode.elm);
            oldVnode.elm.remove()
        }
    }

}

